<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>姓名案例_计算属性</title>
    <script src="../js/vue.js"></script>
</head>
<body>
<div id="root">
    <label>
        姓：<input type="text" v-model="firstName"><br/><br/>
        名：<input type="text" v-model="lastName"><br/><br/>
        全名：<span>{{fullName}}</span><br/><br/>
        全名：<span>{{fullName}}</span><br/><br/>
        全名：<span>{{fullName}}</span><br/><br/>
        全名：<span>{{fullName}}</span><br/><br/>
        全名：<span>{{fullName}}</span>
    </label>
</div>
</body>

<script type="text/javascript">
    Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

    new Vue({
        el:'#root',
        data:{
            firstName:'张',
            lastName:'三'
        },
        computed: {
            // 计算属性计算完之后，就会变成vm的带有的属性了，所以才可以直接使用fullName进行插值
            fullName: {
                // get什么时候会被调用?
                // 1.初次获取读取fullName的值时；2.所依赖的数据发生变化时
                get() {
                    // 这里的this，vue帮我们已经做好了封装，指向的就是实例
                    return this.firstName + '-' + this.lastName
                },

                // 其实假如你判断计算属性只会被调用，这个set就不要写
                // 但是会有地方改变这个值，就写
                set(value) {
                    const arr = value.split('-')
                    this.firstName = arr[0]
                    this.lastName = arr[1]
                }
            }

            // 简写形式
            // fullName() {
            //     return this.firstName + '-' + this.lastName;
            // }
        }
    })
</script>
</html>